package es.mfp.practicos.DTO;

import java.io.Serializable;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.Locale;

public class TotalFactura implements Serializable {

	private static final long serialVersionUID = 1L;

	private static final NumberFormat currencyFormatter = NumberFormat
			.getCurrencyInstance(Locale.getDefault());

	static {
		currencyFormatter.setRoundingMode(RoundingMode.HALF_UP);
		currencyFormatter.setMaximumFractionDigits(2);
	}

	public TotalFactura() {

		totalConsumido = 0d;
		puntosAcumulados = 0;
		totalDescuento = 0d;
		totalFacturado = 0d;
		totalIva = 0d;

	}

	public Double getTotalConsumido() {
		return totalConsumido;
	}

	public void setTotalConsumido(Double totalConsumido) {
		this.totalConsumido = totalConsumido;
	}

	public Double getTotalIva() {
		return totalIva;
	}

	public void setTotalIva(Double totalIva) {
		this.totalIva = totalIva;
	}

	public Double getTotalFacturado() {
		return totalFacturado;
	}

	public void setTotalFacturado(Double totalFacturado) {
		this.totalFacturado = totalFacturado;
	}

	public Integer getPuntosAcumulados() {
		return puntosAcumulados;
	}

	public void setPuntosAcumulados(Integer puntosAcumulados) {
		this.puntosAcumulados = puntosAcumulados;
	}

	public String getTotalConsumidoFormateado() {
		return formatea(totalConsumido);
	}

	public String getTotalIvaFormateado() {
		return formatea(totalIva);
	}

	public String getTotalFacturadoFormateado() {
		return formatea(totalFacturado);
	}

	public String getTotalDescuentoFormateado() {
		return formatea(totalDescuento);
	}

	private static String formatea(Double importe) {
		if (importe == null) {
			importe = 0d;
		}
		return currencyFormatter.format(importe).replaceAll("\\.", "")
				.replace(',', '.');
	}

	private Double totalConsumido = null;

	private Double totalIva = null;

	private Double totalFacturado = null;

	private Integer puntosAcumulados = null;

	private Double totalDescuento = null;

	public Double getTotalDescuento() {
		return totalDescuento;
	}

	public void setTotalDescuento(Double totalDescuento) {
		this.totalDescuento = totalDescuento;
	}

	public static void main(String[] args) {

		System.out.println("---" + formatea(1000.34555));

		System.out.println("---" + Double.valueOf(1000.556).toString());

		System.out.println("---" + formatea(1000.55));
	}

}
